Convolutional Network Structure |
When designing a convolutional network, it is important to understand what is the purpose of each type of layer in order to create the network structure that best fits for an specific application. Cuando se diseña una red convolucional, es importante entender cual es el propósito de cada tipo de capa a fin de crear la estructura de la red que mejor se acomode para la aplicación específica. |
Problem 1 |
Complete the following table using the words: YES, NO or ALWAYS. Complete la siguiente tabla usando las palabras: SI, NO o SIEMPRE. |
Problem 2 |
Search for two popular configurations for convolutional neural networks. For each of them, write
Busque dos configuraciones comunes para las redes neuronales convolucionales. Para cada una de ellas, escriba
|
Tip |
It is important to note the Grocery database with only a very few images is presented here for illustrative purposes only. As the database has only 24 images, the performance of the network cannot be validated. Es importante notar que la base de datos de Grocery con solamente unas pocas imágenes es presentada aquí por propósitos ilustrativos solamente. Como la base de datos tienes solamente 24 imágenes, el desempeño de la red no puede ser validado. |
Problem 3 |
In this exercise, we will build the convolutional neural network with one pooling layer (see figure) to classify the fruits of the simple database of the Grocery project. Open the Grocery project that you created in Convolutional NN > Tensor . Use notepad to create a CSV file called target.csv with the correct class for each fruit. En este ejercicio, nosotros construiremos una red neuronal convolucional con una capa pooling (vea la figura) para clasificar las frutas de la base de datos simple del proyecto Grocery. Abra el proyecto Grocery que usted creo en Convolutional NN > Tensor . Use el block de notas para crear un archivo CSV llamado target.csv con la clase correcta para cada fruta. |
Step A |
Add a new file called TrainPool.lab to use a convolutional neural network to classify the fruits of the Grocery project. Agregue un archivo nuevo llamado TrainPool.lab para usar una red neuronal convolucional para clasificar las frutas del proyecto de Grocery. |
Grocery\TrainPool.lab |
//_______________________________________ 1. Load the input tensor Tensor fruit; fruit.LoadFolder(); //_______________________________________ 2. Load the target (class for each fruit) Tensor target; target.LoadCsv(4, 1, 1); //_______________________________________ 3. Create the network ConvNet netp; netp.Create(256, 256, 3, 3); netp.SetInRange(0.0, 255.0); netp.SetOutRange(0.0, 1.0); //_______________________________________ 4. Layer setup netp.SetPoolLayer(0, 5, 10, 10); // visualField=10 netp.SetFullLayer(1, 1, 5); // logsig=1, neurons=5 netp.SetFullLayer(2, 1, 4); // logsig=1, neurons=4 //netp.SetFullLayer(2, 5, 4); // SoftMaxReject=5, neurons=4 //_______________________________________ 5. Train using genetic algoritm: logsig netp.SetTrainSet(fruit, target, false); netp.TrainGenetic( 40, //Population Size 20, //Number Generations 1.8, //Over Population 0.001, //Probability of Mutation 0.8, //Probability of Crossover 1.0e-5, //Goal (desired mse) true //Use Singular Value Decomposition ); //_______________________________________ 6. Train using conjugate gradient netp.TrainConjGrad(2500,1.0e-8); netp.Save(); |
Step B |
After training the network, add a new file called CheckPool.lab to check the training by computing the confusion matrix. Después de entrenar la red, agregue un archivo nuevo llamado CheckPool.lab para verificar el entrenamiento calculando la matriz de confusión. |
Grocery\CheckPool.lab |
//_________________________________________ 1. Load the input tensor Tensor fruit; fruit.LoadFolder(); //_________________________________________ 2. Load the target (class for each fruit) Tensor target; target.LoadCsv(4, 1, 1); //_________________________________________ 3. Load the network ConvNet netp; netp.Load(); //_________________________________________ 4. Run Tensor output; netp.Run(fruit, output); //_________________________________________ 5. Compute the Confusion Matrix Matrix trainConf; output.ConfusionMatrix(target, 0.5, trainConf); trainConf.Save(); //_________________________________________ Compute the Number of Errors int numErrors = toint(trainConf.GetSum()) - toint(trainConf.GetDiagonalSum()); |
Problem 4 |
|
Problem 5 |
Repeat the Grocery project using a network with a convolutional layer and a pooling layer as shown below. Repita el proyecto de Grocery usando una red con una capa convolucional y una capa pooling cómo se muestra debajo. |
Step A |
Add a new file called TrainConv.lab to use a convolutional neural network with a convolutional layer to classify the fruits of the Grocery project. Agregue un archivo nuevo llamado TrainConv.lab para usar una red neuronal convolucional con una capa convolucional para clasificar las frutas del proyecto de Grocery. |
Grocery\TrainConv.lab |
//_______________________________________ 1. Load the input tensor Tensor fruit; fruit.LoadFolder(); //_______________________________________ 2. Load the target (class for each fruit) Tensor target; target.LoadCsv(4, 1, 1); //_______________________________________ 3. Create the network ConvNet netc; netc.Create(256, 256, 3, 4); netc.SetInRange(0.0, 255.0); netc.SetOutRange(0.0, 1.0); //_______________________________________ 4. Layer setup netc.SetPoolLayer(0, 5, 4, 4); // visualField=4 netc.SetConvLayer(1, 1, 3, 0, 1, 1); // logsig=1, visualField=3, numFilters=1 netc.SetFullLayer(2, 1, 5); // logsig=1, neurons=5 netc.SetFullLayer(3, 1, 4); // logsig=1, neurons=4 //netc.SetFullLayer(3, 5, 4); // SoftMaxReject=5, neurons=4 //_______________________________________ 5. Train using genetic algoritm: logsig netc.SetTrainSet(fruit, target, false); netc.TrainGenetic( 80, //Population Size 20, //Number Generations 1.8, //Over Population 0.001, //Probability of Mutation 0.8, //Probability of Crossover 1.0e-5, //Goal (desired mse) true //Use Singular Value Decomposition ); //_______________________________________ 6. Train using conjugate gradient: SoftMax netc.TrainConjGrad(1000,1.0e-8); netc.Save(); |
Step B |
After training the network, add a new file called CheckConv.lab to check the training by computing the confusion matrix. Después de entrenar la red, agregue un archivo nuevo llamado CheckConv.lab para verificar el entrenamiento calculando la matriz de confusión. |
Grocery\CheckConv.lab |
//_________________________________________ 1. Load the input tensor Tensor fruit; fruit.LoadFolder(); //_________________________________________ 2. Load the target (class for each fruit) Tensor target; target.LoadCsv(4, 1, 1); //_________________________________________ 3. Load the network ConvNet netc; netc.Load(); //_________________________________________ 4. Run Tensor output; netc.Run(fruit, output); //_________________________________________ 5. Compute the Confusion Matrix Matrix trainConf; output.ConfusionMatrix(target, 0.5, trainConf); trainConf.Save(); //_________________________________________ Compute the Number of Errors int numErrors = toint(trainConf.GetSum()) - toint(trainConf.GetDiagonalSum()); |
Problem 6 |
|
Problem 7 |
Download a research paper about one application of convolutional neural networks. Write a 300 words summary to describe the application, the structure of the network and the obtained results. Descargue un artículo de investigación sobre una aplicación de las redes neuronales convolucionales. Escriba un resumen de 300 palabras para describir la aplicación, la estructura de la red y los resultados obtenidos. |